perm filename GEOMES.HDR[GEM,HE]10 blob sn#146186 filedate 1975-02-14 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00008 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002
C00004 00003	COMMENT EUCLID
C00005 00004	COMMENT WINGED EDGE PRIMITIVES
C00007 00005	COMMENT EULER PRIMITIVES
C00008 00006	COMMENT EXTERNAL DECLARATIONS FOR DISPLAY ROUTINES
C00009 00007	COMMENT GEM-NODE NAMES FOR LINKS AND DATA
C00011 00008
C00013 ENDMK
C⊗;

	REQUIRE "GEOMED.REL[SAI,BGB]"	LOAD_MODULE;
	REQUIRE "GEOMES.REL[SAI,BGB]"	LOAD_MODULE;
	REQUIRE "UTILTY.REL[SAI,BGB]"	LOAD_MODULE;
	REQUIRE "EULER.REL[SAI,BGB]"	LOAD_MODULE;
	REQUIRE "EUCLID.REL[SAI,BGB]"	LOAD_MODULE;
	REQUIRE "OCCULT.REL[SAI,BGB]"	LOAD_MODULE;
	REQUIRE "BIN.REL[SAI,BGB]"	LOAD_MODULE;

	REQUIRE "⊂⊃⊂⊃" DELIMITERS;
	DEFINE $UBR=⊂EXTERNAL SIMPLE INTEGER PROCEDURE⊃;

COMMENT BASIC GEOMED, IO AND DISPLAY;
	EXTERNAL INTEGER UNIVERSE;
	INTERNAL INTEGER RESULT;

	$UBR MKUNIV;
	$UBR GEOMED;
	$UBR GEODPY;

	$UBR SHOW1(INTEGER WINDOW,GLASS);
	$UBR SHOW2(INTEGER WINDOW,GLASS);
	$UBR SHOW3(INTEGER WINDOW,GLASS);

	$UBR PPROJ(INTEGER CAMERA,WORLD);

	$UBR INGEM(STRING FILNAM);
	$UBR INB3D(STRING FILNAM);
	$UBR INCAM(STRING FILNAM);
	$UBR SETFOC(REAL FMM);

	$UBR FDNAME(STRING FILNAM);
	$UBR OUTGEM(STRING FILNAM;INTEGER B);
	$UBR OUTB3D(STRING FILNAM;INTEGER B);
	$UBR OUTCAM(STRING FILNAM);
	$UBR PLOTO(STRING FILNAM);

COMMENT EUCLID;
	$UBR APTRAM(INTEGER Q,ET);
	$UBR INTRAM(INTEGER ET);
	$UBR TRANSL(INTEGER Q;REAL X,Y,Z);
	$UBR ROTATE(INTEGER Q;REAL X,Y,Z);
	$UBR SHRINK(INTEGER Q;REAL X,Y,Z);

	$UBR MKTRMA(REAL P,T,S);
	$UBR MKTRMF(INTEGER F);
	$UBR MKTRMV(REAL WX,WY,WZ);
	$UBR MKROTV(INTEGER TRAM);
	$UBR MKTRAM;

	EXTERNAL SIMPLE REAL PROCEDURE DISTAN(INTEGER Q1,Q2);
	EXTERNAL SIMPLE REAL PROCEDURE DETERM(INTEGER Q);

COMMENT WINGED EDGE PRIMITIVES;
	$UBR MKNODE(INTEGER TYP);	$UBR KLNODE(INTEGER NODE);
	$UBR MKCAMERA(INTEGER WORLD);	$UBR MKWORLD;
	$UBR MKWINDOW(INTEGER CAMERA,WINDOW);
	$UBR MKB(INTEGER WORLD);	$UBR KLB(INTEGER BNEW);
	$UBR KLBFEV(INTEGER BNEW);	$UBR MKBFV;
	$UBR KILL(INTEGER BNEW);
	$UBR MKF(INTEGER FNEW);		$UBR KLF(INTEGER FNEW);
	$UBR MKE(INTEGER ENEW);		$UBR KLE(INTEGER ENEW);
	$UBR MKV(INTEGER VNEW);		$UBR KLV(INTEGER VNEW);
	$UBR WING(INTEGER E1,E2);	$UBR LINKED(INTEGER Q1,Q2);
	$UBR ECW(INTEGER Q1,Q2);	$UBR ECCW(INTEGER Q1,Q2);
	$UBR OTHER(INTEGER Q1,Q2);	$UBR BGET(INTEGER Q);
	$UBR VCW(INTEGER E,F);		$UBR VCCW(INTEGER E,F);
	$UBR FCW(INTEGER E,V);		$UBR FCCW(INTEGER E,V);
	$UBR BDET(INTEGER Q);		$UBR BATT(INTEGER Q1,Q2);

COMMENT EULER PRIMITIVES;
	$UBR INVERT(INTEGER E);		$UBR EVERT(INTEGER B);
	$UBR MKEV(INTEGER F,V);		$UBR MKFE(INTEGER V1,F,V2);
	$UBR ESPLIT(INTEGER E);
	
	$UBR KLFE(INTEGER E);
	$UBR KLEV(INTEGER V);
	$UBR KLVE(INTEGER E);

	$UBR MKCOPY(INTEGER B);
	$UBR GLUE(INTEGER F1,F2);
	$UBR GLUEE(INTEGER F1,V1,F2,V2);

	$UBR SWEEP(INTEGER F,FLG);
	$UBR ROTCOM(INTEGER F);
	$UBR PYRAMID(INTEGER FV);

	$UBR REMOVF(INTEGER F);
	$UBR FVDUAL(INTEGER B);

	$UBR MKCUBE(REAL A,B,C);
	$UBR MKCYLN(REAL R,N,Z);
	$UBR MKBALL(REAL R,M,N);

	$UBR BUN(INTEGER B1,B2);
	$UBR BIN(INTEGER B1,B2);
	$UBR BSUB(INTEGER B1,B2);

COMMENT EXTERNAL DECLARATIONS FOR DISPLAY ROUTINES;

	$UBR DPYSET(INTEGER ARRAY PTR);
	$UBR DPYBIG(INTEGER SIZE);
	$UBR DPYBRT(INTEGER SIZE);

	$UBR AVECT(INTEGER X,Y);
	$UBR AIVECT(INTEGER X,Y);
	$UBR RVECT(INTEGER X,Y);
	$UBR RIVECT(INTEGER X,Y);

	$UBR DPYSST(STRING S);
	$UBR DPYOUT(INTEGER POG);
	$UBR DPYSTR(REFERENCE INTEGER TEXT);

	$UBR DTYO(INTEGER BPTR);
	$UBR OCTDPY(INTEGER X);
	$UBR DECDPY(INTEGER X);
	$UBR FLODPY(REAL X;INTEGER PLACES(4));

COMMENT GEM-NODE NAMES FOR LINKS AND DATA;
	$UBR CAR(INTEGER Q);
	$UBR CDR(INTEGER Q);
	$UBR DIP(INTEGER AC,Q);
	$UBR DAP(INTEGER AC,Q);

SIMPLE INTEGER PROCEDURE XWD(INTEGER Q1,Q2);START_CODE HRLZ 1,Q1;HRR 1,Q2;END;

COMMENT WORLD LOCUS;
	DEFINE XWC(V)=⊂MEMORY[V-3,REAL]⊃;
	DEFINE YWC(V)=⊂MEMORY[V-2,REAL]⊃;
	DEFINE ZWC(V)=⊂MEMORY[V-1,REAL]⊃;
	DEFINE AA(V)=⊂MEMORY[V-3,REAL]⊃;
	DEFINE BB(V)=⊂MEMORY[V-2,REAL]⊃;
	DEFINE CC(V)=⊂MEMORY[V-1,REAL]⊃;
	DEFINE BBIT=⊂'1000000⊃;

COMMENT ROTATION MATRIX;
	DEFINE IX(V)=⊂MEMORY[V+0,REAL]⊃;
	DEFINE IY(V)=⊂MEMORY[V+1,REAL]⊃;
	DEFINE IZ(V)=⊂MEMORY[V+2,REAL]⊃;
	DEFINE JX(V)=⊂MEMORY[V+3,REAL]⊃;
	DEFINE JY(V)=⊂MEMORY[V+4,REAL]⊃;
	DEFINE JZ(V)=⊂MEMORY[V+5,REAL]⊃;
	DEFINE KX(V)=⊂MEMORY[V+6,REAL]⊃;
	DEFINE KY(V)=⊂MEMORY[V+7,REAL]⊃;
	DEFINE KZ(V)=⊂MEMORY[V+8,REAL]⊃;

COMMENT PERSPECTIVE-PROJECTED LOCUS;
	DEFINE XPP(V)=⊂MEMORY[V+4,REAL]⊃;
	DEFINE YPP(V)=⊂MEMORY[V+5,REAL]⊃;
	DEFINE ZPP(V)=⊂MEMORY[V+6,REAL]⊃;

DEFINE NFACE(Q)=⊂CAR((Q)+1)⊃;	DEFINE PFACE(Q)=⊂CDR((Q)+1)⊃;
DEFINE NED(Q)=⊂CAR((Q)+2)⊃;	DEFINE PED(Q)=⊂CDR((Q)+2)⊃;
DEFINE NVT(Q)=⊂CAR((Q)+3)⊃;	DEFINE PVT(Q)=⊂CDR((Q)+3)⊃;
DEFINE NCW(Q)=⊂CAR((Q)+4)⊃;	DEFINE PCW(Q)=⊂CDR((Q)+4)⊃;
DEFINE NCCW(Q)=⊂CAR((Q)+5)⊃;	DEFINE PCCW(Q)=⊂CDR((Q)+5)⊃;

DEFINE DAD(Q)=⊂CAR((Q)+4)⊃;	DEFINE SON(Q)=⊂CDR((Q)+4)⊃;
DEFINE BRO(Q)=⊂CAR((Q)+5)⊃;	DEFINE SIS(Q)=⊂CDR((Q)+5)⊃;

DEFINE ALT(Q)=⊂CAR((Q)+6)⊃;	DEFINE ALT2(Q)=⊂CDR((Q)+6)⊃;
DEFINE TRAM(Q)=⊂CDR(((Q))+6)⊃;
DEFINE CW(Q)=⊂CAR((Q)+7)⊃;	DEFINE CCW(Q)=⊂CDR((Q)+7)⊃;

DEFINE NLINK(Q)=⊂CAR((Q)+8)⊃;	DEFINE PLINK(Q)=⊂CDR((Q)+8)⊃;

DEFINE NFACE$(A,Q)=⊂DIP((A),(Q)+1)⊃;	DEFINE PFACE$(A,Q)=⊂DAP((A),(Q)+1)⊃;
DEFINE NED$(A,Q)=⊂DIP((A),(Q)+2)⊃;	DEFINE PED$(A,Q)=⊂DAP((A),(Q)+2)⊃;
DEFINE NVT$(A,Q)=⊂DIP((A),(Q)+3)⊃;	DEFINE PVT$(A,Q)=⊂DAP((A),(Q)+3)⊃;
DEFINE NLINK$(A,Q)=⊂DIP((A),(Q)+8)⊃;	DEFINE PLINK$(A,Q)=⊂DAP((A),(Q)+8)⊃;

REQUIRE UNSTACK_DELIMITERS;